import axios from 'axios'
import qs from 'qs'
import router from 'vue-router'

import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
// 请求拦截器
//请求拦截:每一次发请求给后端，需要统一加的参数在请求拦截中做，比如加token
//请求拦截return的内容就是后端收到的真正的请求信息
axios.interceptors.request.use(config => {
    // 从本地的userInfo_pc中获取tocken
    let token = sessionStorage['userInfo_pc'] ? sessionStorage['userInfo_pc'].token : '';
    if (token) {
        // 通过请求头将tocken发送到服务器
        config.headers.authorization = token
    }
    // 在request拦截器中展示进度条NProgress.start()
    NProgress.start()
    return config
}, err => {
    return Promise.reject(err)
})

// 响应拦截器
axios.interceptors.response.use(config => {
    if (config.data.code == 403) {
        console.log(`${config.data.msg}`)
        // router.push('/login')
        return
    }
    // 在response拦截器中隐藏进度条NProgress.done()
    NProgress.done()
    return config
})

// 使用axios发送get请求
export let sendGet = (url, params = {}, headers = {}) => {
    return axios.get(url, {
        params,
        headers,//通过请求头传参，比如：传令牌
    })
}

// 使用axios发送post请求
export let sendPost = (url, data = {}, isFile = false, headers = {}) => {
    let params = ''
    if (isFile) { //data参数中含有文件上传
        let forms = new FormData()
        for (let key in data) {
            forms.append(key, data[key])
        }
        params = forms
    } else {  //data参数中不含文件上传
        params = qs.stringify(data)
    }

    return axios.post(url, params, {
        headers, //通过请求头传参，比如：传令牌
    })
}